// 配置函数axios
 import axios from 'axios'
 import store from '@/store'
 import router from '@/router'
// 1.1 创建新的axios实例
const instance=axios.create({
  baseURL:"http://pcapi-xiaotuxian-front-devtest.itheima.net/",
  timeout:5000
})
instance.interceptors.request.use((config)=>{
  //携带token
  const {profile}=store.state.user;
  if(profile.token){
    config.headers.Authorization=`Bearer ${profile.token}`;
  }
  return config
},
(err)=>Promise.reject(err))

// 3. 响应拦截器，取出内ret中的data，处理401错误
instance.interceptors.response.use(ret=>ret.data,err=>{
  // 401 会走这里，其他错误也会走，所以处理token失效需要判断状态
  if (err.response && err.response.status === 401) {
    router.push("/login");
  }
  return Promise.reject(err)
})

//2.封装工具函数
// 2.1 三个参数：url，method，submitData(不用考虑提交数据放哪个选项)
// 2.2 函数里面：根据method去把提交数据放置对应的选项
// 2.3 把axios调用的promise返回即可


/**
 * 请求工具函数
 * @param {string} url 请求地址
 * @param {string} method 请求方式
 * @param {object} submitData 请求传参
 * @returns Promise
 */
const request =(url,method,submitData)=>{
  return instance({
    url,
    method,
    //submitData应该放在哪个选项里？
    [method.toLowerCase()==='get'?"params":"data"]:submitData
  })
}
export default request;